import random

WIDTH = 300
HEIGHT = 300

BACK_COLOR = (0, 0, 0)

class MyRect:
    def __init__(self, x, y, w, h, clr):
        self.x = x
        self.y = y
        self.w = w
        self.h = h
        self.clr = clr
        self.speed = 2

    def SetSpeed(self, speed):
        self.speed = speed

    def GetLByy(self):
        return self.y - self.h // 2

    def GetRByy(self):
        return self.y + self.h // 2

    def SetYByL(self, l):
        self.y = l + self.h // 2

    def SetYByR(self, r):
        self.y = r - self.h // 2       

    def Update(self):
        self.y += self.speed
        if (self.speed > 0 and self.GetRByy() > WIDTH) or (self.speed < 0 and self.GetLByy() < 0):
            self.speed = -self.speed
            self.speed += self.speed * (random.random()- 0.5)
        
        if self.x + self.w // 2 > WIDTH:
            self.x = WIDTH - self.w // 2
        elif self.x - self.w // 2 < 0:
            self.x = self.w // 2

    def Draw(self):
        rc = Rect((self.x - self.w // 2, self.y - self.h // 2), (self.w, self.h))
        screen.draw.filled_rect(rc, self.clr)

#rc = MyRect(0, 100, 100, 100, (0, 200, 0))

clr_list = [
    (0, 200, 0),
    (200, 0, 0),
    (0, 0, 200),
    (0, 200, 200),
    (200, 0, 200),
    (200, 200, 0),
    (200, 200, 200),
]
rc_list = []
for i in range(10):
    w = random.randint(50, 100)
    clr_index = random.randint(0, 6)
    #print(clr_index)
    clr = clr_list[clr_index]
    rc = MyRect(0, random.randint(100, 200), w, w, clr)
    rc.SetSpeed(random.randint(1, 10))
    rc_list.append(rc)

def on_key_down(key):
    if key == keys.ESCAPE:
        quit()
        
def on_mouse_down(pos):
    print("mouse_down", pos)
    
def on_mouse_up(pos):
    print("mouse_up", pos)
    
def update():
    for rc in rc_list:
        rc.Update()
        
def draw():
    screen.clear()
    screen.fill(BACK_COLOR)
    for rc in rc_list:
        rc.Draw()


